home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NOVA - For the NeXT Workstation
/
NOVA - For the NeXT Workstation.iso
/
SourceCode
/
OOP_Course
/
Examples
/
DragDemo_1.1
/
MouseView.m
< prev
next >
Wrap
Text File
|
1992-12-19
|
2KB
|
83 lines
/*
* MouseView -- John Glover, adapted from MouseTracker by Randy Nelson
* An abstract class that manages a modal loop for tracking the mouse
*
*/
#import "MouseView.h"
@implementation MouseView
- setTrackingRect:sender
{
NXRect myFrame = frame;
[[self superview] convertRect:&myFrame toView:nil];
[window setTrackingRect:&myFrame
inside:NO
owner:self
tag:23
left:NO
right:NO];
return self;
}
- mouseDown:(NXEvent *)e
{
NXPoint startPoint = e->location, nextPoint;
int looping = YES;
int oldMask = [window addToEventMask:NX_MOUSEDRAGGEDMASK];
/* do first mouse down action */
[self convertPoint:&startPoint fromView:nil];
[self mouseDownAction:&startPoint];
while (looping){
e = [NXApp getNextEvent:NX_MOUSEUPMASK|NX_MOUSEDRAGGEDMASK];
nextPoint = e->location;
[self convertPoint:&nextPoint fromView:nil];
if(e->type == NX_MOUSEDRAGGED){
[superview autoscroll:e];
/* do continuing mouse dragged action */
[self mouseDraggedAction:&nextPoint];
}
else{
looping = NO;
/* do mouse up action */
[self mouseUpAction:&nextPoint];
}
}
[window setEventMask:oldMask];
return self;
}
- mouseEntered:(NXEvent *)e
{
return [super mouseEntered:e];
}
- mouseExited:(NXEvent *)e
{
return [super mouseExited:e];
}
- mouseDownAction:(NXPoint *)currentLocation
{
return self;
}
- mouseDraggedAction:(NXPoint *)currentLocation
{
return self;
}
- mouseUpAction:(NXPoint *)currentLocation
{
return self;
}
@end